// 推送服务管理
export default {
  // 初始化推送服务
  initPush() {
	// 1. 判断是否为 App 环境
	const systemInfo = uni.getSystemInfoSync();
	console.log('App 环境', systemInfo);
    // 获取推送管理器
    const pushManager = uniCloud.getPushManager();
    
    // 初始化推送服务
    pushManager.init({
      onSuccess: (res) => {
        console.log('推送服务初始化成功', res);
        this.getCid(pushManager);
        this.registerPushListener(pushManager);
      },
      onFail: (err) => {
        console.error('推送服务初始化失败', err);
      }
    });
  },
  
  // 获取CID并上传到自己的服务器
  getCid(pushManager) {
    pushManager.getCid({
      onSuccess: (res) => {
        console.log('获取CID成功', res.cid);
        // 将CID上传到自己的服务器，用于后续推送
        this.uploadCidToServer(res.cid);
      },
      onFail: (err) => {
        console.error('获取CID失败', err);
      }
    });
  },
  
  // 上传CID到自己的服务器
  uploadCidToServer(cid) {
    // 调用自己的后端接口保存CID
    uni.request({
      url: 'https://你的服务器地址/api/saveCid',
      method: 'POST',
      data: {
        cid: cid,
        userId: '当前登录用户ID' // 如果有用户系统，关联用户ID
      },
      success: (res) => {
        console.log('CID上传成功', res);
      },
      fail: (err) => {
        console.error('CID上传失败', err);
      }
    });
  },
  // 添加获取CID的方法
  getClientId() {
    const pushManager = uniCloud.getPushManager();
    let cid = '';
    pushManager.getCid({
      onSuccess: (res) => {
        cid = res.cid;
      },
      onFail: (err) => {
        console.error('获取CID失败', err);
      }
    });
    return cid;
  },
  // 注册推送监听器
  registerPushListener(pushManager) {
    // 监听推送消息
    pushManager.onPush((res) => {
      console.log('收到推送消息', res);
      
      // 处理透传消息
      if (res.type === 'pass_through') {
        this.handlePassThroughMessage(res.content);
      }
      
      // 处理通知消息点击
      if (res.type === 'notify' && res.event === 'click') {
        this.handleNotificationClick(res);
      }
    });
    
    // 监听推送服务状态变化
    pushManager.onStatus((res) => {
      console.log('推送服务状态变化', res);
    });
  },
  
  // 处理透传消息
  handlePassThroughMessage(content) {
    // 这里可以处理透传消息，如显示本地通知等
    uni.showToast({
      title: '收到新消息: ' + content,
      icon: 'none',
      duration: 3000
    });
    
    // 可以在这里触发页面更新等操作
    // 例如：uni.$emit('newMessage', content);
  },
  
  // 处理通知点击事件
  handleNotificationClick(res) {
    console.log('通知被点击', res);
    // 可以跳转到对应的页面
    uni.navigateTo({
      url: `/pages/detail/detail?id=${res.payload.id}`
    });
  }
};
